package mx.unam.acatlan.poo.rps;

import mx.unam.acatlan.poo.rps.player.Agent;


/**
 * El registro de un juego de piedra, papel o tijeras.
 * 
 * <p style="text-align: justify">
 * Esta clase es utilizada como elemento en el arreglo que regresa el método
 * {@link Enfrentamiento#getResultadosPrevios()}. En este contexto, {@link RPSRecord} representa uno de
 * los juegos de PPT en los que participó el {@link Agent} contra el que se
 * está compitiendo.
 * </p>
 * <p style="text-align: justify">
 * Por diseño, {@link RPSRecord} no debe ser heredada, por lo tanto, es declarada
 * como final.
 * </p>
 * 
 * @author Carlos Alegria Galicia
 * @see Enfrentamiento
 */
public final class RPSRecord {

	/**
	 * El movement que realizó el {@link Agent} en este juego.
	 */
	private Movement movement;
	
	/**
	 * La puntuación que el {@link Agent} obtuvo en este juego.
	 */
	private int puntuacion;
	
	/**
	 * Crea el registro de un {@link RPSRecord}, en el que el {@link Agent}
	 * realizó el movement <code>movement</code>, y obtuvo el puntuacion
	 * indicado por <code>puntuacion</code>.
	 * 
	 * @param movement	El movement que realizó el {@link Agent}.
	 * 						contrario en este juego. 
	 * @param puntuacion	La puntuación que obtuvo el {@link Agent} en este
	 * 						RPSRecord.
	 * 
	 * @see RPSRecord#puntuacion
	 */
	public RPSRecord(Movement movement, int resultado) {
		this.movement = movement;
		this.puntuacion = resultado;
	}

	/**
	 * Regresa el movement realizado por el {@link Agent} en este juego.
	 * 
	 * @return El valor del atributo {@link RPSRecord#movement}
	 */
	public Movement getMovimiento() {
		return movement;
	}

	/**
	 * Regresa el puntuacion que obtuvo el {@link Agent} en este juego. 
	 * 
	 * @return	La puntuación final que obtuvo el {@link Agent} en este juego. 
	 */
	public int getResultado() {
		return puntuacion;
	}

	@Override
	public String toString() {
		return "{" + this.movement + ", " + this.puntuacion + "}";
	}
}
